/*
 * Copyright © 2016-2019 WAWSCM Inc. All rights reserved.
 */

package com.wawscm.base;

import java.math.BigDecimal;

/**
 * 数学运算
 *
 * @author Wang Chengwei
 * @since 1.0.0
 */
public class Math {

    private Math() {}

    /**
     * 加法运算
     * @param numbers 参与运算的数字
     * @return 和
     */
    public static int add(int...numbers) {
        if (numbers.length < 2) {
            throw new IllegalArgumentException("必须有两个或两个以上的参数参与运算");
        }
        int sum = 0;
        for (int number : numbers) {
            sum += number;
        }
        return sum;
    }

    /**
     * 所有数值的绝对值的和
     * @param numbers 参与运算的数字
     * @return 和
     */
    public static int absSum(int... numbers) {
        if (numbers.length < 2) {
            throw new IllegalArgumentException("必须有两个或两个以上的参数参与运算");
        }
        int sum = 0;
        for (int number : numbers) {
            sum += java.lang.Math.abs(number);
        }
        return sum;
    }

    /**
     * 乘法运算
     * @param a 被乘数
     * @param b 乘数
     * @return 积
     */
    public static int multiply(int a, int b) {
        return a * b;
    }

    /**
     * 除法运算
     * @param dividend 被除数
     * @param divisor 除数
     * @return 商
     */
    public static BigDecimal divide(BigDecimal dividend, BigDecimal divisor) {
        return  dividend.divide(divisor, 4, BigDecimal.ROUND_HALF_UP);
    }
}
